package com.cdutetc.demo.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import com.cdutetc.demo.repository.UserRepository;
import com.cdutetc.demo.common.PageResult;
import com.cdutetc.demo.common.Result;
import com.cdutetc.demo.model.ao.UserQueryAO;
import com.cdutetc.demo.model.vo.UserVO;
import com.cdutetc.demo.model.entity.User;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class UserService {

    private final UserRepository userRepository;

    // 使用构造器注入
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public Result<PageResult<UserVO>> queryUsers(UserQueryAO queryAO) {
        // 创建排序（设置默认值）
        String sortField = "id"; // 默认按id排序
        String sortDirection = "ASC"; // 默认升序

        Sort sort = Sort.by(Sort.Direction.fromString(sortDirection), sortField);

        // 创建分页请求
        PageRequest pageable = PageRequest.of(queryAO.getPage(), queryAO.getSize(), sort);

        // 执行分页查询
        Page<User> userPage = userRepository.findAll(pageable);

        // 转换为 VO 对象列表
        List<UserVO> userVOs = userPage.getContent().stream()
                .map(UserVO::fromEntity)
                .collect(Collectors.toList());

        // 使用你现有的 PageResult 构造方法
        PageResult<UserVO> pageResult = new PageResult<>(userPage);
        pageResult.setList(userVOs); // 设置转换后的 VO 列表

        return Result.success(pageResult);
    }
}